package com.liuya.db.orm;

/**
 * WARN!!!! We will deprecate it later.
 */
public class SelectConditionUtil {
	/**
	 * Use equals comparator and and linker type, combine them into a select
	 * condition.
	 * 
	 * @param selectByColumns
	 * @return
	 */
	public static SelectCondition simplyConnectColumns(Column[] selectByColumns) {
		if (selectByColumns == null)
			return null;
		ComplexWhereElement cpxEmt = new ComplexWhereElement();
		Column column = selectByColumns[0];
		FieldWhereElement emt = simplyToFieldWhereElement(column);
		cpxEmt.setFirstPart(emt);
		if (selectByColumns.length > 1) {
			LWhereElement[] lEmts = new LWhereElement[selectByColumns.length - 1];
			for (int i = 1; i < selectByColumns.length; i++) {
				FieldWhereElement temp = simplyToFieldWhereElement(selectByColumns[i]);
				LWhereElement lEmt = new LWhereElement();
				lEmt.setWhereElement(temp);
				lEmt.setLinkType(LWhereElement.AND_LINK_TYPE);
				lEmts[i - 1] = lEmt;
			}
			cpxEmt.setLinkedParts(lEmts);
		}
		SelectCondition cdtn = new SelectCondition();
		if (selectByColumns.length == 1) {
			cdtn.setWhereElement(emt);
		} else {
			cdtn.setWhereElement(cpxEmt);
		}
		return cdtn;
	}

	/**
	 * Convert column to field where element, by using equals comparator.
	 * 
	 * @param column
	 * @return
	 */
	public static FieldWhereElement simplyToFieldWhereElement(Column column) {
		FieldWhereElement emt = new FieldWhereElement();
		emt.setColumn(column);
		emt.setCompartor(SingleValueComparator.EQUAL);
		emt.setContextValue(true);
		return emt;
	}
}
